<?php

/**
 * Создание адреса относительно текущего модуля
 * @param string $uri Ссылка
 * @param boolean $ajax Использовать режим AJAX или нет
 * @return string
 */
function modul_url($uri, $ajax = false) {
    
    $CI =& get_instance();
    return $CI->uri->modul_url($uri, $ajax);
}


/**
 * Создание ссылки относительно текущего модуля
 * @param string $uri Ссылка
 * @param string $title Заголовок ссылки
 * @param array $attributes Массив с атрибутами
 * @return string
 */
function modul_anchor($uri = '', $title = '', $attributes = '') {
    
    $title = (string) $title;
    $site_url = modul_url($uri);
    
    if ($title == '')
    {
        $title = $site_url;
    }
    
    if ($attributes != '')
    {
        $attributes = _parse_attributes($attributes);
    }
    
    return '<a href="'.$site_url.'"'.$attributes.'>'.$title.'</a>';
}



/**
 * Создание JavaScript ссылки
 * @param string $onclick JavaScript код, который выполниться при клике
 * @param string $title Заголовок ссылки
 * @param array $attributes Массив с атрибутами
 * @return string
 */
function js_anchor($onclick = '', $title = '', $attributes = '') {
    
    $title = (string) $title;

    if ($title == '')
    {
        $title = 'link';
    }

    if ($attributes != '')
    {
        $attributes = _parse_attributes($attributes);
    }

    return '<a href="javascript: void(0);" onclick="'.$onclick.'" '.$attributes.'>'.$title.'</a>';
}



/**
 * Редирект внутри модуля
 * @param string $uri Ссылка
 * @param string $method Тип редиректа
 * @param string $http_response_code Заголовок который будет отправлен
 * @return void
 */
function modul_redirect($uri = '', $method = 'location', $http_response_code = 302) {
    
    switch($method)
    {
        case 'refresh'  : header("Refresh:0;url=".modul_url($uri));
            break;
        default         : header("Location: ".modul_url($uri), TRUE, $http_response_code);
            break;
    }
    exit;
}


/**
 * Вывод страницы 404 которая задаётся в настройках
 * @return void
 */
function page_404() {
    
    $CI =& get_instance();
    redirect($CI->config->item('page_404', 'core'), 'location', 404);
}


/**
 * Возвращение на предыдущую посещённую страницу
 * @param string $url
 * @return void
 */
function redirect_back($url = '') {
    
    $CI =& get_instance();
    $url_back = $CI->session->userdata('history');
    
    if ($CI->usr->check_rights('view', $url_back)) {
        
        redirect($url_back);
    }
    else {
    
        redirect($url);
    }
}

/**
 * Создание ссылки с автоматическим выделением если эта ссылка активна
 * @param string $uri Ссылка
 * @param string $title Заголовок ссылки
 * @param array $attributes Массив с атрибутами
 * @param int $segment Выделять ссылку по сегменту
 * @return string
 */
function url_anchor($uri = '', $title = '', $attributes = '', $segment = false) {
    
    $CI =& get_instance();
    
    if ($segment) {
        
        $segments = explode('/', '/'.$uri);
        $current = ($segments[$segment] == $CI->uri->segment($segment)) ? true : false;
    }
    else {
        
        $current = ($CI->uri->uri_string() == '/'.$uri) ? true : false;
    }
    
    if ($current) {
        
        if (is_array($attributes) && isset($attributes['class'])) {
            
            $attributes['class'] .= ' current';
        }
        else {
            
            $attributes['class'] = 'current';
        }
    }
    
    return anchor($uri, $title, $attributes);
}


/**
 * Создание ссылки с автоматическим выделением если эта ссылка активна, относительно модуля
 * @param string $uri Ссылка
 * @param string $title Заголовок ссылки
 * @param array $attributes Массив с атрибутами
 * @param int $segment Выделять ссылку по сегменту
 * @return string
 */

function url_modul_anchor($uri = '', $title = '', $attributes = '', $segment = false) {
    
    $CI =& get_instance();
    
    if ($segment) {
        
        $segments = explode('/', '/'.$uri);
        $current = ($segments[$segment] == $CI->uri->segment($segment)) ? true : false;
    }
    else {
        
        $current = ($CI->uri->other_uri_string() == '/'.$uri) ? true : false;
    }
    
    if ($current) {
        
        if (is_array($attributes) && isset($attributes['class'])) {
            
            $attributes['class'] .= ' current';
        }
        else {
            
            $attributes['class'] = 'current';
        }
    }
    
    return modul_anchor($uri, $title, $attributes);
}